package ele_handler

import "fmt"

func init() {
	registerInitFunc(
		func() YuqueElementHandler {
			h := &spanStruct{}
			h.elements = []string{"span"}
			return h
		})
}

// span 标签
type spanStruct struct {
	BaseHandler
	styleVal string
}

func (s *spanStruct) preHandle() error {
	// span 存在 style 样式时，使用 <span></span> 包裹
	styleVal := findAttribute(s.node, "style")

	if len(styleVal) > 0 {
		s.styleVal = styleVal
		s.WriteTextContext(fmt.Sprintf("<span style=\"%s\">", styleVal))

		// 如果 span 是在 code 里面(即 ``)，则 code 不要使用 ``
		wrapCode := s.ctxMap["wrapCode"]
		if wrapCode != nil && wrapCode.(bool) {
			s.ctxMap["hasSpanStyle"] = true
		}
	}

	return nil
}

func (s *spanStruct) postHandle() error {
	if len(s.styleVal) > 0 {
		s.WriteTextContext("</span>")
	}

	return nil
}
